export function timeToDecimal(t?: string): number | undefined {
  if (t) {
    const [hours, minutes, seconds] = t.split(':').map(parseFloat);
    const decimalTime = hours + minutes / 60 + seconds / 3600;
    return parseFloat(decimalTime.toFixed(2)); // 精确到小数点后三位
  }
}

const statusMap = [
  { itemValue: '10', itemName: '建设' },
  { itemValue: '40', itemName: '检修' },
  { itemValue: '30', itemName: '运行' },
  { itemValue: '60', itemName: '计划停运' },
  { itemValue: '50', itemName: '故障' },
  { itemValue: '20', itemName: '调试' },
  { itemValue: '1', itemName: '充电' },
  { itemValue: '2', itemName: '放电' },
  { itemValue: '0', itemName: '静置' },
];

export function getStatusName(itemValue: number | undefined) {
  const trimmedValue = String(itemValue).trim(); // 确保 itemValue 是字符串并删除空格
  const status = statusMap.find((item) => item.itemValue === trimmedValue);
  // 如果找到匹配的对象，返回对应的 itemName，否则返回 undefined
  return status ? status.itemName : undefined;
}

const siteTypeMap = [
  { itemValue: '1', itemName: '工商储' },
  { itemValue: '2', itemName: '大储' },
  { itemValue: '3', itemName: '发电侧新能源配储' },
  { itemValue: '4', itemName: '发电侧独立储能' },
  { itemValue: '5', itemName: '发电侧火电配储' },
  { itemValue: '6', itemName: '光储充一体' },
];

export function getSiteName(itemValue: string | undefined) {
  const trimmedValue = String(itemValue).trim(); // 确保 itemValue 是字符串并删除空格
  const status = siteTypeMap.find((item) => item.itemValue === trimmedValue);
  // 如果找到匹配的对象，返回对应的 itemName，否则返回 undefined
  return status ? status.itemName : undefined;
}

export function extractTime(dateTimeString: string | undefined) {
  if (dateTimeString) {
    // 使用正则表达式提取时间部分
    const timeMatch = dateTimeString?.match(/\d{2}:\d{2}:\d{2}/);
    return timeMatch ? timeMatch[0] : ''; // 如果匹配到时间部分则返回，否则返回空字符串
  } else {
    return '';
  }
}

/**
 * 格式化功率或能量值
 * @param {number} value - 原始数值
 * @param {boolean} isPower - 是否为功率单位（默认为 false，表示能量单位）
 * @returns {{ value: string, unit: string }} 格式化后的数值和单位
 */
export function formatPower(value: string | number | null | undefined, isPower: boolean = false) {
  // 如果 value 是 null 或不是数字，返回默认值
  if (value === null || value === undefined || isNaN(Number(value))) {
    return {
      value: '--',
      unit: '',
    };
  }

  // 确保 value 是一个数字
  // eslint-disable-next-line no-param-reassign
  value = Number(value);
  let unit = isPower ? 'kW' : 'kWh';

  // 如果数值大于等于 1000，转换为 MW 或 MWh
  if (value >= 1000) {
    // eslint-disable-next-line no-param-reassign
    value = value / 1000;
    unit = isPower ? 'MW' : 'MWh';
  }

  // 如果转换为 MW 或 MWh 后仍然大于等于 1000，转换为 GW 或 GWh
  if (value >= 1000) {
    // eslint-disable-next-line no-param-reassign
    value = value / 1000;
    unit = isPower ? 'GW' : 'GWh';
  }

  // 格式化数值，保留两位小数
  const formattedValue = value.toFixed(2);

  return {
    value: formattedValue,
    unit: unit,
  };
}
